package com.yc.cloud.openai.portal.dao;

import java.io.File;

import com.yc.cloud.openai.portal.dto.PromptDto;
import com.yc.cloud.openai.portal.dto.QueueDto;
import com.yc.cloud.openai.portal.dto.UploadImageDto;
import com.yc.cloud.openai.portal.dto.request.TextToImageInterruptRequest;
import com.yc.cloud.openai.portal.dto.request.TextToImageQueueCancelRequest;
import com.yc.cloud.openai.portal.dto.request.TextToImageQueueRequest;
import com.yc.cloud.openai.portal.dto.request.TextToImageRequest;
import com.yc.cloud.openai.portal.dto.response.ComfyUiHistoryResponse;
import com.yc.cloud.openai.portal.dto.response.ComfyUiQueueResponse;

public interface ComfyUiClient {

    /**
     * 文生图
     *
     * @param request, prompt:提示词 ,width:图片宽度,height:图片高度,style:风格
     * @return 任务ID
     */
    PromptDto convertTextToImage(TextToImageRequest request);

    /**
     * 获取排队信息
     */
    QueueDto queue(TextToImageQueueRequest request);

    /**
     * 获取历史记录
     *
     * @param request 历史记录请求,包含promptId
     * @return 历史记录列表
     */
    ComfyUiHistoryResponse history(String promptId, String type);

    /**
     * 取消排队中的某个队列
     *
     * @param request 取消请求,包含promptId
     * @return success：取消成功；failed：取消失败
     */
    ComfyUiQueueResponse cancelQueue(TextToImageQueueCancelRequest request);

    /**
     * 判断当前任务ID是否是正在运行的队列
     *
     * @param promptId 任务ID
     * @return true：正在运行；false：未运行
     */
    boolean isRunningQueue(String promptId);

    /**
     * 中断当前运行的队列
     *
     * @param request 中断请求
     * @return true：成功中断；false：失败
     **/
    boolean interrupt(TextToImageInterruptRequest request);

    /**
     * 上传图片
     *
     * @param request 上传请求
     * @param file 图片文件
     * @return 上传结果
     */
    UploadImageDto uploadImage(File file);
}
